home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / iff2ansi.lha / downloads / iff2ansi.s
Encoding:
Text File  |  1990-09-14  |  12.6 KB  |  695 lines

  1.  
  2.     section x,code
  3.  
  4.     opt w-
  5.  
  6. ; IFF-to-ANSI V0.1        Sourcecode (Buddha's MasterSeka rules)
  7. ; active font should be TOPAZ 80 (no 60 char display, please...)
  8. ; this one really NEEDS the genious 'Req.library' !
  9. ;
  10. ; programmed by Carnivore/BeerMacht
  11. ; on 9-Nov-1990
  12. ;
  13. ; I declare executable and sourcecode as 100% FreeWare
  14. ;
  15. ; Notes:TOPLINE below 12 changes to borderless window
  16. ;       take care of the HEIGHT value to prevent text beeing written
  17. ;       below the bottomline (NTSC?) if no borderless window is set
  18. ;
  19.  
  20. CloseLibrary        = -414
  21. OldOpenLibrary        = -408
  22.  
  23. Close            = -36
  24. Open            = -30
  25. Output            = -60
  26. Read            = -42
  27. Write            = -48
  28.  
  29. FileRequester        = -$54
  30. GetLong            = -$b4
  31.  
  32. dsize    = 130
  33. fchars    = 30
  34. wildlen    = 30
  35.  
  36. maxiffsize = 20000    ;iff bufsize
  37.  
  38. run:    move.l 4.w,a6
  39.     lea reqname(pc),a1
  40.     jsr OldOpenLibrary(a6)
  41.     move.l d0,reqbase
  42.     beq.L noreq        ;the errormessages down here are
  43.                 ;quite poor, but who cares...
  44.  
  45.     move.l d0,a0
  46.     move.l $26(a0),dosbase
  47.     move.l dosbase(pc),a6
  48.     jsr Output(a6)
  49.     move.l d0,d1
  50.     beq.s noclihd
  51.     lea clitxt(pc),a2
  52.     move.l a2,d2
  53.     move.l #clilen,d3
  54.     jsr Write(a6)
  55.  
  56. noclihd:move.l reqbase(pc),a6
  57.     lea fileload(pc),a0
  58.     jsr FileRequester(a6)
  59.     tst.l d0
  60.     beq.L nofile
  61.  
  62.     move.l dosbase(pc),a6
  63.     lea frpath(pc),a0
  64.     move.l a0,d1
  65.     move.l #1005,d2
  66.     jsr Open(a6)
  67.     move.l d0,srchd
  68.     beq.L notfnd
  69.     move.l d0,d1
  70.     move.l #iffdata,d2
  71.     move.l #maxiffsize,d3
  72.     jsr Read(a6)
  73.  
  74.     move.l srchd(pc),d1
  75.     jsr Close(a6)
  76.  
  77.     lea iffdata,a0
  78.     cmp.l #"FORM",(a0)
  79.     bne.L noiff
  80.     bsr.L iffsize
  81.  
  82.     cmp.b #1,d0    ;#planes
  83.     bne.L toomany
  84.     move.w d1,bytes
  85.     cmp.w #40,d1
  86.     bhi.L toowide
  87.     moveq #40,d0
  88.     sub.w d1,d0
  89.     lsl.w #3,d0    ;center ansipic 
  90.     move.w d0,leftoff
  91.  
  92.     move.w d2,hgtreq+4+2    ;default    
  93.  
  94.     lea iffdata,a0
  95.     lea bpltab,a1
  96.     lea coltab,a2
  97.     clr.l d0
  98.     bsr.l iffunpack
  99.  
  100.     move.l reqbase(pc),a6
  101.     lea topreq(pc),a0
  102.     jsr GetLong(a6)
  103.     tst.l d0
  104.     beq.L notop
  105.     move.w topreq+16+2(pc),d0
  106.     move.b d0,linenum
  107.     sub.w d0,hgtreq+12+2        ;max
  108.     move.w hgtreq+12+2(pc),d0    ;max
  109.     cmp.w hgtreq+4+2(pc),d0        ;default
  110.     bhi.s sizeok
  111.     move.w d0,hgtreq+4+2        ;default
  112.  
  113. sizeok:    lea hgtreq(pc),a0
  114.     jsr GetLong(a6)
  115.     tst.l d0
  116.     beq.s nohgt
  117.     move.w hgtreq+16+2(pc),lines
  118.  
  119.     lea csrreq(pc),a0
  120.     jsr GetLong(a6)
  121.     tst.l d0
  122.     beq.s nocsr
  123.     move.w csrreq+16+2(pc),csrrow
  124.  
  125.     bsr.L doansi
  126.     move.l a0,d7    ;a0:length
  127. ;;;
  128.  
  129.     lea filesave(pc),a0
  130.     jsr FileRequester(a6)
  131.     tst.l d0
  132.     beq.s nosav
  133.  
  134.     move.l dosbase(pc),a6
  135.     lea frpath(pc),a0
  136.     move.l a0,d1
  137.     move.l #1006,d2
  138.     jsr Open(a6)
  139.     move.l d0,desthd
  140.     beq.s notwr
  141.     move.l d0,d1
  142.     move.l #ansibuf,d2
  143.     move.l d7,d3    ;length
  144.     jsr Write(a6)
  145.  
  146.     move.l desthd(pc),d1
  147.     jsr Close(a6)
  148.  
  149.     moveq #-1,d0
  150.     lea $dff006,a0
  151. raul:    move.w (a0),$180-6(a0)    ;blink if no error (??)
  152.     dbf d0,raul
  153.  
  154. notwr:
  155. nosav:
  156.  
  157. nocsr:
  158. nohgt:
  159. notop:
  160.  
  161. toowide:
  162. toomany:
  163.  
  164. noiff:
  165.  
  166. notfnd:
  167. nofile:    
  168.  
  169. allesok:move.l 4.w,a6
  170.     move.l reqbase(pc),a1
  171.     jsr CloseLibrary(a6)
  172. noreq:    clr.l d0
  173.     rts
  174.  
  175. doansi:    sf inv
  176.     lea ansibuf,a0
  177.     lea bpl1,a1
  178.  
  179.     move.l #$9b302070,(a0)+    ;cursor off
  180.  
  181.     move.w #$9b30,(a0)+
  182.     move.w #$6d20,(a0)+    ;reset txtmode
  183.  
  184.     move.w leftoff(pc),d1    ;borderless if pic is wide
  185.     cmp.w #16,d1
  186.     bls.s nobord
  187.  
  188.     cmp.b #12-1,linenum    ;borderless if topline <12
  189.     bhi.s topok
  190.  
  191. nobord:    move.l #$9b333274,(a0)+    ;32 row
  192.  
  193.     move.l #$9b383175,(a0)+    ;set linelength 81 if full width
  194.  
  195.     move.b #$9b,(a0)+    ;clr window top if topline < 12
  196.     move.b #"0",(a0)+
  197.     move.b #$79,(a0)+    ;pix top
  198.     move.b #$9b,(a0)+    ;clr window top if topline < 12
  199.     move.b #"0",(a0)+
  200.     move.b #$78,(a0)+    ;pix left
  201.  
  202. topok:    move.b #12,(a0)+    ;clrscr again (for borderless)
  203.  
  204.     move.b #$9b,(a0)+
  205.     bsr.L dodez
  206.     move.b #$78,(a0)+    ;pix left
  207.  
  208.     move.w lines(pc),d4
  209. linelp:    bsr.L doline
  210.     move.b #13,(a0)+
  211.  
  212.     subq.w #1,d4
  213.     bmi.L endpic
  214.  
  215.     move.l a1,a3
  216.     move.w bytes(pc),bytenum
  217.     
  218.     move.w bytes(pc),d0
  219.     move.l a1,a4
  220.     sub.w d0,a4        ;previous line
  221.     subq.w #1,d0
  222.     move.l a1,a2
  223.     moveq #-1,d1
  224. cntspc:    addq.l #1,d1
  225.     tst.b (a4)+    ;dots in previous line?
  226.     bne.s clrprev
  227.     tst.b (a2)+
  228.     dbne d0,cntspc
  229.     tst.w d0
  230.     bmi.s clrrest
  231. clrprev:tst.l d1
  232.     beq.s nospc
  233.     cmp.b #1,d1    ;8dots=2spc <3chrs
  234.     beq.s nospc    
  235.     add.w d1,a3
  236.     sub.w d1,bytenum
  237.     add.w d1,d1
  238.  
  239.     move.b #$9b,(a0)+
  240.     bsr.L dodez
  241.     move.b #$43,(a0)+    ;cursor n right
  242. nospc:
  243.  
  244. bitline:subq.w #1,bytenum
  245.     bmi.s endline        ;all bytes converted
  246.     clr.w d2
  247.     move.b (a3),d2
  248.     lsr.b #4,d2        ;left 4 bits
  249.     bsr.L donibb
  250.     move.b (a3)+,d2
  251.     and.w #$000f,d2
  252.     bsr.L donibb
  253.  
  254.     move.w bytenum(pc),d0
  255.     subq.w #1,d0
  256.     bmi.s bitline
  257.     move.l a3,a2        ;check rest of line for bits
  258.     move.l a3,a4
  259.     sub.w bytes(pc),a4    ;previous line
  260.     sf d2
  261. chkline:tst.b (a4)+
  262.     beq.s isok
  263.     st d2            ;dots in previous line!
  264. isok:    tst.b (a2)+
  265.     dbne d0,chkline
  266.     tst.w d0
  267.     bpl.s bitline
  268.     tst.b d2
  269.     beq.s isclr
  270. clrrest:move.b #$9b,(a0)+
  271.     move.b #$4b,(a0)+    ;clr rest of line
  272. isclr:
  273.  
  274. endline:add.w bytes(pc),a1
  275.     bra.L linelp
  276.  
  277. endpic:    move.b #$9b,(a0)+    ;Yoe! I'm too lasy to do it better
  278.     move.b #$4d,(a0)+    ;clrline
  279.     move.b #$9b,(a0)+
  280.     move.b #$74,(a0)+    ;line num reset
  281.     move.b #$9b,(a0)+
  282.     move.b #$75,(a0)+    ;line length reset
  283.     move.b #$9b,(a0)+
  284.     move.b #$78,(a0)+    ;pix left reset
  285.     move.b #$9b,(a0)+
  286.     move.b #$79,(a0)+    ;pix top reset
  287.     move.b #$9b,(a0)+    ;normal video
  288.     move.b #"0",(a0)+
  289.     move.b #"m",(a0)+
  290.     move.b #$9b,(a0)+    ;cursor row
  291.     move.w csrrow(pc),d1
  292.     bsr.s dodez
  293.     move.b #$48,(a0)+
  294.     move.b #$9b,(a0)+    ;cursor on
  295.     move.b #" ",(a0)+
  296.     move.b #$70,(a0)+
  297.     lea ansibuf,a1
  298.     sub.l a1,a0        ;length of ansitxt
  299.     rts
  300.  
  301. doline:    move.b #$9b,(a0)+    ;$9b,nnn,$79
  302.     clr.w d1
  303.     move.b linenum(pc),d1
  304.     bsr.s dodez
  305.     move.b #$79,(a0)+
  306.     addq.b #1,linenum
  307.     rts
  308.  
  309. dodez:    sf d0
  310.     ext.l d1
  311.     divu #100,d1
  312.     tst.w d1
  313.     beq.s no100
  314.     st d0
  315.     add.b #"0",d1
  316.     move.b d1,(a0)+
  317.     clr.w d1
  318. no100:    swap d1
  319.     divu #10,d1
  320.     tst.b d0
  321.     bne.s is10
  322.     tst.w d1
  323.     beq.s no10
  324. is10:    add.b #"0",d1
  325.     move.b d1,(a0)+
  326. no10:    swap d1
  327.     add.b #"0",d1
  328.     move.b d1,(a0)+
  329.     rts
  330.  
  331. donibb:    lsl.b #3,d2        ;*8
  332.     lea tab(pc),a2        ;chartab normal
  333.     tst.b inv
  334.     beq.s notinv
  335.     lea tab2(pc),a2        ;chartab inverse
  336. notinv:    cmp.b #"7",1(a2,d2.w)
  337.     bne.s nochg
  338.     st inv
  339. nochg:    cmp.b #"0",1(a2,d2.w)
  340.     bne.s nochg2
  341.     sf inv
  342. nochg2:
  343. seqloop:move.b (a2,d2.w),d0    ;copy char/ansisequence
  344.     beq.s endseq
  345.     move.b d0,(a0)+
  346.     addq.w #1,d2
  347.     bra.s seqloop
  348. endseq:    rts
  349.     
  350. ; Name:    iffsize (used with Tristar's kind permission?)
  351. ; In:    a0.l=Zeiger auf iffpic
  352. ; Out:    d0.w=Anzahl Planes
  353. ;    d1.w=Bytes pro Zeile
  354. ;    d2.w=Anzahl Zeilen
  355.  
  356. iffsize:    move.l    a0,-(sp)
  357.     add.w    #12,a0
  358. iffsize0:    cmp.l    #'BMHD',(a0)
  359.     beq.s    iffsize1
  360.     move.l    4(a0),d0
  361.     lea    8(a0,d0.l),a0
  362.     bra.s    iffsize0
  363. iffsize1:    move.w    8(a0),d1
  364.     move.w    d1,d2
  365.     lsr.w    #4,d1
  366.     and.w    #15,d2
  367.     beq.s    iffsize2
  368.     addq.w    #1,d1
  369. iffsize2:    add.w    d1,d1
  370.     move.w    10(a0),d2
  371.     moveq    #0,d0
  372.     move.b    16(a0),d0
  373.     move.l    (sp)+,a0
  374.     rts
  375.  
  376. ; iffunpack (used with Tristar's kind permission?)
  377. ; In:    a0.l=Zeiger auf iffpic
  378. ;    a1.l=Zeiger auf Tabelle mit Zeigern auf die einzelnen
  379. ;         Planepuffer (wird nicht zerstoert)
  380. ;    a2.l=Zeiger auf Puffer fuer Farbwerte
  381. ;    d0.w=Offset, der (intern) auf a2 addiert wird, nachdem ein
  382. ;         Farbwert in den Puffer geschrieben wurde (normal=2,
  383. ;         fuer Copperliste=4)
  384. ; Out:    -
  385.  
  386. iffunpack:    movem.l    d0-d7/a0-a6,-(sp)
  387.     add.w    #12,a0
  388. iffunpack0:    cmp.l    #'BMHD',(a0)
  389.     beq.s    iffunpack1
  390.     move.l    4(a0),d1
  391.     lea    8(a0,d1.l),a0
  392.     bra.s    iffunpack0
  393. iffunpack1:    move.l    a0,a3
  394. iffunpack2:    cmp.l    #'CMAP',(a0)
  395.     beq.s    iffunpack3
  396.     move.l    4(a0),d1
  397.     lea    8(a0,d1.l),a0
  398.     bra.s    iffunpack2
  399. iffunpack3:    moveq    #1,d1
  400.     move.b    16(a3),d2
  401.     lsl.w    d2,d1
  402.     lea    8(a0),a4
  403.     bra.s    iffunpack5
  404. iffunpack4:    move.b    (a4)+,d2
  405.     lsl.w    #4,d2
  406.     and.w    #$0f00,d2
  407.     move.b    (a4)+,d2
  408.     and.w    #$0ff0,d2
  409.     move.b    (a4)+,d3
  410.     lsr.b    #4,d3
  411.     and.w    #$000f,d3
  412.     or.w    d3,d2
  413.     move.w    d2,(a2)
  414.     add.w    d0,a2
  415. iffunpack5:    dbf    d1,iffunpack4
  416. iffunpack6:    cmp.l    #'BODY',(a0)
  417.     beq.s    iffunpack7
  418.     move.l    4(a0),d0
  419.     lea    8(a0,d0.l),a0
  420.     bra.s    iffunpack6
  421. iffunpack7:    moveq    #0,d7
  422.     move.b    16(a3),d7
  423.     subq.w    #1,d7
  424.     moveq    #0,d0
  425.     move.w    d7,d1
  426. iffunpack8:    move.l    0(a1,d0.w),-(sp)
  427.     addq.w    #4,d0
  428.     dbf    d1,iffunpack8
  429.     move.w    d0,-(sp)
  430.     move.w    8(a3),d6
  431.     move.w    d6,d2
  432.     lsr.w    #4,d6
  433.     and.w    #15,d2
  434.     beq.s    iffunpack9
  435.     addq.w    #1,d6
  436. iffunpack9:    add.w    d6,d6
  437.     move.l    4(a0),d0
  438.     lea    8(a0,d0.l),a2
  439.     addq.l    #8,a0
  440. iffunpacka:    cmp.l    a2,a0
  441.     bge.s    iffunpackj
  442.     moveq    #0,d3
  443.     move.w    d7,d2
  444. iffunpackb:    move.l    0(a1,d3.l),a4
  445.     bsr.s    iffunpackc
  446.     move.l    a4,0(a1,d3.l)
  447.     addq.l    #4,d3
  448.     dbra    d2,iffunpackb
  449.     bra.s    iffunpacka
  450. iffunpackc:    lea    0(a4,d6.w),a5
  451. iffunpackd:    cmp.l    a5,a4
  452.     bge.s    iffunpackl
  453.     tst.b    18(a3)
  454.     bne.s    iffunpacke
  455.     move.w    d6,d0
  456.     bra.s    iffunpackg
  457. iffunpacke:    move.b    (a0)+,d0
  458.     ext.w    d0
  459.     bmi.s    iffunpackh
  460. iffunpackf:    move.b    (a0)+,(a4)+
  461. iffunpackg:    dbf    d0,iffunpackf
  462.     bra.s    iffunpackd
  463. iffunpackh:    neg.w    d0
  464.     move.b    (a0)+,d1
  465. iffunpacki:    move.b    d1,(a4)+
  466.     dbf    d0,iffunpacki
  467.     bra.s    iffunpackd
  468. iffunpackj:    move.w    (sp)+,d0
  469.     move.w    d7,d1
  470. iffunpackk:    subq.w    #4,d0
  471.     move.l    (sp)+,0(a1,d0.w)
  472.     dbf    d1,iffunpackk
  473.     movem.l (sp)+,d0-d7/a0-a6
  474. iffunpackl:    rts
  475. ; hang that bastard pope...
  476. fileload:dc.w 0    ;version
  477.     dc.l title
  478.     dc.l 0
  479.     dc.l 0
  480.     dc.l frpath
  481.     dc.l 0
  482.     dc.w 0
  483.     dc.w 14        ;numlines
  484.     dc.w 30        ;numcolumns
  485.     dc.w 12        ;devcolumns
  486.      dc.l $10+$40+$1000    ;hideinfo,absxy,save($1000=load)
  487.     dc.w 3        ;dircolor
  488.     dc.w 0        ;filecolor
  489.     dc.w 3        ;devcolor
  490.     dc.w 0        ;fontnamecolor
  491.     dc.w 0        ;fontsizecolor
  492.     dc.w 0        ;detailcolor
  493.     dc.w 0        ;blockcolor
  494.     dc.w 0
  495.     dc.w 0
  496.     dc.w 0
  497.     dc.w 0
  498.     dc.w 0
  499.     dc.w 0
  500.     dcb.b 36,0
  501.     dcb.l 3,0    ;datestamp
  502.     dc.w 3        ;wdleft
  503.     dc.w 11        ;wdtop
  504.     dc.w 0
  505.     dc.w 0
  506.     dc.l 0
  507.     dcb.b wildlen+2,0
  508.     dcb.b wildlen+2,0
  509.     dc.w 0
  510.     dc.w 0
  511.     dc.w 0
  512.     dc.w 0
  513.     dc.w 0
  514.     dc.w 0
  515.     dc.w 0
  516.     dc.w 0
  517.     dc.l 0
  518.     dc.l 0
  519.     dc.l 0
  520.     dcb.b dsize+2,0
  521.     dc.l 0
  522.     dc.w 0
  523.     dc.w 0
  524.     dc.w 0
  525.     dc.w 0
  526. ; slaves of death, addicted to gore...
  527. filesave:dc.w 0    ;version
  528.     dc.l title2
  529.     dc.l 0
  530.     dc.l 0
  531.     dc.l frpath
  532.     dc.l 0
  533.     dc.w 0
  534.     dc.w 14        ;numlines
  535.     dc.w 30        ;numcolumns
  536.     dc.w 12        ;devcolumns
  537.      dc.l $10+$40+$800    ;hideinfo,absxy,save($1000=load)
  538.     dc.w 3        ;dircolor
  539.     dc.w 0        ;filecolor
  540.     dc.w 3        ;devcolor
  541.     dc.w 0        ;fontnamecolor
  542.     dc.w 0        ;fontsizecolor
  543.     dc.w 0        ;detailcolor
  544.     dc.w 0        ;blockcolor
  545.     dc.w 0
  546.     dc.w 0
  547.     dc.w 0
  548.     dc.w 0
  549.     dc.w 0
  550.     dc.w 0
  551.     dcb.b 36,0
  552.     dcb.l 3,0    ;datestamp
  553.     dc.w 3        ;wdleft
  554.     dc.w 11        ;wdtop
  555.     dc.w 0
  556.     dc.w 0
  557.     dc.l 0
  558.     dcb.b wildlen+2,0
  559.     dcb.b wildlen+2,0
  560.     dc.w 0
  561.     dc.w 0
  562.     dc.w 0
  563.     dc.w 0
  564.     dc.w 0
  565.     dc.w 0
  566.     dc.w 0
  567.     dc.w 0
  568.     dc.l 0
  569.     dc.l 0
  570.     dc.l 0
  571.     dcb.b dsize+2,0
  572.     dc.l 0
  573.     dc.w 0
  574.     dc.w 0
  575.     dc.w 0
  576.     dc.w 0
  577. ; with my chainsaw in hand your death I command...
  578. topreq:    dc.l topname
  579.     dc.l 12        ;default
  580.     dc.l 0        ;min
  581.     dc.l 256    ;max
  582.     dc.l 0        ;result
  583.     dc.l 0
  584.     dc.w 0
  585.     dc.l 0
  586.     dc.l 0
  587. hgtreq:    dc.l hgtname
  588.     dc.l 0        ;default
  589.     dc.l 0        ;min
  590.     dc.l 256    ;max
  591.     dc.l 0        ;result
  592.     dc.l 0
  593.     dc.w 0
  594.     dc.l 0
  595.     dc.l 0
  596. csrreq:    dc.l csrname
  597.     dc.l 20        ;default
  598.     dc.l 1        ;min
  599.     dc.l 32        ;max
  600.     dc.l 0        ;result
  601.     dc.l 0
  602.     dc.w 0
  603.     dc.l 0
  604.     dc.l 0
  605.  
  606. bpltab:    dc.l bpl1
  607. coltab:    dc.w 0
  608. reqbase:dc.l 0
  609. bytes:    dc.w 0    ;# of bytes/gfxline
  610. lines:    dc.w 0    ;# of gfxlines
  611. leftoff:dc.w 0    ;# pixel to left border
  612. bytenum:dc.w 0    ;gfxbytecounter
  613. csrrow:    dc.w 0    ;row to put cursor at end of pic
  614. file:    dc.l 0
  615. dosbase:dc.l 0
  616. srchd:    dc.l 0    ;filehandle source
  617. desthd:    dc.l 0    ;filehandle dest
  618.  
  619. title:    dc.b "Select IFF-source (LORES, 1 bitplane) ",0
  620. title2:    dc.b "Select the filename of the ANSI-text  ",0
  621. frpath:    dcb.b dsize+fchars+2,0
  622. hgtname:dc.b "Height of ANSIpic ",0
  623. topname:dc.b "Offset to TOPLINE ",0
  624. csrname:dc.b "Put cursor in ROW ",0
  625. reqname:dc.b "req.library",0    ;Yo! the only one, you NEED it.
  626. clitxt:    dc.b 12,$9b,"0;31;42m"
  627.     dc.b $9b,"49",$43
  628.     dc.b " IFF-to-ANSI V0.1  9-Nov-90 ",10
  629.     dc.b $9b,"49",$43
  630.     dc.b " a tool completely FreeWare ",10
  631.     dc.b $9b,"49",$43
  632.     dc.b "to convert a LORES-IFF-BRUSH",10
  633.     dc.b $9b,"49",$43
  634.     dc.b "into an optimised ANSI-text.",10
  635.     dc.b $9b,"49",$43
  636.     dc.b "Done by Carnivore/BeerMacht.",10
  637.     dc.b $9b,"49",$43
  638.     dc.b " Stoned greetings go to all ",10
  639.     dc.b $9b,"49",$43
  640.     dc.b " lovers of Diebels Alt and  ",10
  641.     dc.b $9b,"49",$43
  642.     dc.b " all those nice sick movies ",10
  643.     dc.b $9b,"49",$43
  644.     dc.b "(ILSA and Necromantic rule).",10
  645.     dc.b $9b,"0m"
  646. clilen=*-clitxt
  647. linenum:dc.b 0    ;gfxlinecounter
  648. inv:    dc.b 0    ;inverseflag: 0:normal,-1:inverse
  649.  
  650. tab:    dc.b " ",0,0,0,0,0,0,0        ;chartab for normal display
  651.     dc.b "/",0,0,0,0,0,0,0        ;TOPAZ 80 !!!
  652.     dc.b "(",0,0,0,0,0,0,0
  653.     dc.b $9b,"7m","L",0,0,0,0
  654.     dc.b ")",0,0,0,0,0,0,0
  655.     dc.b "ä",0,0,0,0,0,0,0
  656.     dc.b "0",0,0,0,0,0,0,0
  657.     dc.b $9b,"7m","\",0,0,0,0
  658.     dc.b "\",0,0,0,0,0,0,0
  659.     dc.b "V",0,0,0,0,0,0,0
  660.     dc.b $7f,0,0,0,0,0,0,0
  661.     dc.b $9b,"7m",")",0,0,0,0
  662.     dc.b "L",0,0,0,0,0,0,0
  663.     dc.b $9b,"7m","(",0,0,0,0
  664.     dc.b "B",0,0,0,0,0,0,0
  665.     dc.b $9b,"7m"," ",0,0,0,0
  666. ;don't deny the necrophile!
  667. tab2:    dc.b $9b,"0m"," ",0,0,0,0    ;chartab for inverse display
  668.     dc.b "B",0,0,0,0,0,0,0
  669.     dc.b $9b,"0m","(",0,0,0,0
  670.     dc.b "L",0,0,0,0,0,0,0
  671.     dc.b $9b,"0m",")",0,0,0,0
  672.     dc.b $7f,0,0,0,0,0,0,0
  673.     dc.b "V",0,0,0,0,0,0,0
  674.     dc.b "\",0,0,0,0,0,0,0
  675.     dc.b $9b,"0m","\",0,0,0,0
  676.     dc.b "0",0,0,0,0,0,0,0
  677.     dc.b "ä",0,0,0,0,0,0,0
  678.     dc.b ")",0,0,0,0,0,0,0
  679.     dc.b $9b,"0m","L",0,0,0,0
  680.     dc.b "(",0,0,0,0,0,0,0
  681.     dc.b "/",0,0,0,0,0,0,0
  682.     dc.b " ",0,0,0,0,0,0,0
  683.  
  684.     dc.b "another sick BeerMacht production"
  685. data    ;3 MB are mine, so why bother with AllocMem?
  686. iffdata:    dcb.b maxiffsize,0    ;lores 
  687.  
  688. bplsecurity:
  689.     dcb.b 40,0    ;line -1
  690. bpl1:    dcb.b 16000,0    ;bitplanedata
  691.  
  692. ansibuf:dcb.b $10000,0    ;ansi/destination
  693. ;
  694. ;Yo, this is the end...
  695.